package com.alks.function.mapper.biocontrol.webwork;

import com.alks.entity.data.entity.PsScheduleHead;
import com.alks.entity.data.entity.PsScheduleLot;
import com.alks.function.data.request.biocontrol.webwork.MoldProgtTempRequest;
import com.alks.function.data.vo.biocontrol.webWrok.LsSchVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ms
 * @since 2024-10-07
 */
public interface PsScheduleHeadMapper extends BaseMapper<PsScheduleHead> {
    /**
     * 成型已排进度查询
     * @param request 查询条件
     * @param companyId 公司id
     * @return 查询结果
     */
    List<PsScheduleHead> schDetailQuery(@Param("request") MoldProgtTempRequest request, @Param("companyId") String companyId);

    /**
     * 成型已排进度查询合计
     * @param request 查询条件
     * @param companyId 公司id
     * @return 合计数据
     */
    List<Map<String, Object>> schDetailSumQuery(@Param("request") MoldProgtTempRequest request, @Param("companyId") String companyId);

    /**
     * 整单安排
     * @param schLotList 安排数据
     * @param line 线别
     * @param newSeqNo 新序号
     * @param userName 用户名
     */
    void allSch(@Param("schLotList") List<PsScheduleLot> schLotList, @Param("line") String line, @Param("newSeqNo") BigDecimal newSeqNo, @Param("userName") String userName);

    /**
     * 序号调整
     * @param line      线别
     * @param newSeqNo  断层序号
     * @param seqAdd    序号增量
     * @param companyId 公司id公司id
     */
    void seqNoShift(@Param("line") String line, @Param("newSeqNo") BigDecimal newSeqNo, @Param("seqAdd") int seqAdd, @Param("companyId") String companyId);

    /**
     * 拆单安排
     * @param schLot 安排数据
     * @param line 线别
     * @param lsSchVoList 拆单批次和数量
     * @param newSeqNo  新序号
     * @param userName 操作人
     */
    void lsSch(@Param("schLot") PsScheduleLot schLot, @Param("line") String line, @Param("lsSchVoList") List<LsSchVo> lsSchVoList, @Param("newSeqNo") BigDecimal newSeqNo, @Param("userName") String userName);

    /**
     * 整单更新
     * @param companyId 公司ID
     */
    void schUp(@Param("companyId") String companyId);

    /**
     * 清理多余数据
     * @param companyId 公司ID
     */
    void schClean(@Param("companyId") String companyId);

    /**
     * 更新指定数据的生产天数和始末日期
     * @param line 线别
     * @param seqList 序号集合
     * @param companyId 公司ID
     */
    void allSchDateUp(@Param("line") String line, @Param("seqList") List<BigDecimal> seqList, @Param("companyId") String companyId);

    /**
     * 获取最晚结束时间
     *
     * @param companyId 公司ID
     * @param line
     * @return 结束时间
     */
    LocalDateTime getEndTime(@Param("companyId") String companyId, @Param("line") String line);
}
